#include<stdlib.h>
#include<time.h>
#include<string>
#include<fstream>
#include<iostream>
#define rank rank_
using namespace std;


//map的编号从?到?
//
void MapMove(int& x,bool direction) {//x为全局变量player类对象.mp_locate

    int i;
    //岔路走的方向按一定规则变换，只用判断是否岔路，然后走的话直接调用规则
    if (direction)//正着走
    {
        if (mp[x]->crossing)
        {
            x = mp[x]->nex_id2;
        }
        else {
            //正常走
            x = mp[x]->nex_id1;
        }
    }
    else //逆着走
    {
        x = mp[x]->come;
    }
}








/*
功能：
    生成星星
参数：
返回值：无
*/
//旧星星玩家碰了之后就消失了，这里只管生成
void CreatStar() {
    bool flag=true;
    int newStar;

    while (flag) {
        srand((unsigned)time(NULL));
        newStar=(rand()%88)+1;
        if (!mp[newStar]->star)
        { 
            flag = false; 
            mp[newStar]->star = true;
        }
    }
};

/*
void read() {
    ifstream ifstream_in;
    ifstream_in.open("data.txt");
    if (!ifstream_in.is_open()) {		//文件被成功地打开否
        cout << "Error opening file";
        exit(1);
    }
    while (!ifstream_in.eof()) {
        char buffer[100];
        ifstream_in.getline(buffer, 100);		//读取文本的每行，将其打印到屏幕上。超过100字符不能打印
        cout << buffer << endl;
    }

    ifstream_in.close();
}
*/


/*
功能：
    维护排行榜
    读取全局变量打印排行榜 和当前回合数/总回合数
参数：无
返回值：无
*/

int rank[4];//假设rank存player_id,player_id即为其在player数组中的下标
void Rank() {
    //维护排行榜
   
    int i, j, temp;
    //如果两个都是0，代表rank还没初始化
    if(  !(rank[0] + rank[1]) )
    {
        //rank的初始化
        for (i = 0; i < 4; i++)
        {
            rank[i] = player[i].player_id;
        }
    }
    //插入排序
    for (i = 1; i < 4; i++)
    {
        temp = i;
        for (j = i; j > 0; j--)
        {
            if ((player[temp].star_num) < (player[j - 1].star_num))break;
            rank[j] = rank[j - 1];
        }
        rank[j] = temp;
    }

    //printRank()副组长小罗搞

    //打开文件"data.txt"
    ofstream data("data.txt", ios::ate|ios::out);

    if (data.is_open())
    {
        //角色编号，星星数,玩家名，步数
        for (i = 0; i < 4; i++)
        {
            data << player[i].character_id << endl << player[i].star_num << endl << player[i].name << endl << player[i].step << endl << endl;
        }

    }else {
        cout << "Error opening file" << endl;
        exit(1);
    }

    data.close();
    //read();
};



//以下已被副组长小罗完成
/*
功能：
    维护玩家状态栏
    读取玩家当前状态 打印玩家名称 星星数 骰子种类和数目 道具
参数：无
返回值：无
*/
void PlayerState() {
    //玩家名称
    //星星数
    //骰子种类和数目
    //道具

};



